package cn.tedu._03mybatis.mapper;

import cn.tedu._03mybatis.pojo.entity.Weibo;
import cn.tedu._03mybatis.pojo.vo.*;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper
public interface WeiboMapper {
    //@Insert("INSERT INTO weibo(content,created,user_id) VALUES (#{content},#{created},#{userId})")
    int insertWeibo(Weibo weibo);

    //删:删除指定的微博;
    //@Delete("DELETE FROM weibo WHERE id=#{wid}")
    int deleteWeiboById(Long wid);

    //改:更新指定的微博信息[只能更新微博内容和时间];
    //@Update("UPDATE weibo SET content=#{content},created=#{created} WHERE id=#{id}")
    int updateWeiboById(Weibo weibo);

    /**
     * 查询1:单条数据全字段查询;
     *      根据微博id查询该条微博的所有信息:id、content、created、user_id;
     */
    //@Select("SELECT id, content, created, user_id userId FROM weibo WHERE id=#{id}")
    Weibo selectWeiboById(Long id);

    /**
     * 查询2:单条数据指定字段查询;
     *      根据微博id查询该条微博的微博内容:content、created;
     */
    //@Select("SELECT content, created FROM weibo WHERE id = #{id}")
    WeiboVO1 selectWeiboVO1ById(Long id);

    /**
     * 查询3: 多条数据指定字段查询;
     *     查询指定用户发的所有微博的content、created、user_id;
     */
    //@Select("SELECT content, created, user_id userId FROM weibo WHERE user_id = #{userId}")
    List<WeiboVO2> selectWeiboVO2ByUserId(Long userId);

    /**
     * 动态SQL：动态更新
     * 根据微博的id修改微博的相关信息{除了id之外，其他字段都可以改}
     * update weibo set content=#{content},created=#{created},user_id=#{userId} where id=#{id}
     */
    int dynamicUpdateWeiboById(Weibo weibo);

    /**
     * 动态SQL：动态删除-数组方式
     */

    int dynamicDeleteWeiboByIds(long [] ids);

    /**
     * 动态SQL：动态删除-集合方式
     */

    int dynamicDeleteWeiboByIds1(List<Long>ids);

    /**
     * 统计 微博数
     * select count（*） from weibo
     */
    int countWeibo();


    /**
     * resultMap单标查询：
     * 根据微博的id查询该条微博的所有信息：id、content、created、user_id;
     * select id，content，created，user_id userId from weibo where id=#{id}
     */
    ResultMapVO1 selectWeiboMap1(Long id);

    /**
     * resultMap 多表查询
     * 查询指定用户发的所有微博
     */
    ResultMapVO2 selectWeiboMap2(Long userId);

    ResultMapVO3 selectWeiboMap3(Long wid);






















}
